﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ABC_SA_BL;
using ABC_SA_DM;

namespace ABC_SA_BLV
{
    public class ServicioPaquete_BLV
    {

        public void consultaListas(DataGridView DGPaquetes, DataGridView DGServicios)
        {
            //////////////////  LLena el DataGrid Paquetes /////////////////////////////////
            //Solicita la lista de paquetes a la capa BL
            Paquete_BL Paquete_BL = new Paquete_BL();
            List<Paquete> listaP = new List<Paquete>();

            //listaP contiene la lista de paquetes
            listaP = Paquete_BL.consultaListaPaquetesInfo();
            //Se recorre la lista para ingresar los registros al DataGrid
            for (int i = 0; i < listaP.Count(); i++)
            {
                // Crea el String que se agregara al Datagrid, y luego lo agrega
                string[] newRow = { listaP.ElementAt(i).nombreSG, listaP.ElementAt(i).precioSG+"", listaP.ElementAt(i).idSG + "" };
                DGPaquetes.Rows.Add(newRow);
            }
            //////////////////  LLena el DataGrid Servicios /////////////////////////////////

            //Solicita la lista de Servicios a la capa BL
            Servicios_BL Servicio_BL = new Servicios_BL();
            List<Servicio> listaS = Servicio_BL.ConsultarServicios();

            //Se recorre la lista para ingresar los registros al DataGrid
            for (int i = 0; i < listaS.Count(); i++)
            {
                //Se define el String cada destino
                int Switch = listaS.ElementAt(i).Categoria;
                string categoria = "";
                switch (Switch)
                {
                    case 0:
                        categoria = "Transporte";
                        break;
                    case 1:
                        categoria = "Hospedaje";
                        break;
                    case 2:
                        categoria = "Alimentación";
                        break;
                    case 3:
                        categoria = "Actividades";
                        break;
                    case 4:
                        categoria = "Entradas";
                        break;
                    default:
                        Console.WriteLine("Sin Categoria");
                        break;
                }

                // Crea el String que se agregara al Datagrid, y luego lo agrega
                string[] newRow = { listaS.ElementAt(i).Nombre, categoria , listaS.ElementAt(i).Monto + "", listaS.ElementAt(i).IdServicio + "" };
                DGServicios.Rows.Add(newRow);
            }
        }

        public void mostrarPaquete(TextBox nombre, TextBox descripcion, Label idPaquete, int intPaquete)
        {
            //Se envía el idPaquete a la capa BL
            Paquete_BL Paquete_BL = new Paquete_BL();
            Paquete paqueteAMostrar = Paquete_BL.mostrarPaquete(intPaquete);

            nombre.Text = paqueteAMostrar.nombreSG;
            descripcion.Text = paqueteAMostrar.descripcionSG;
            idPaquete.Text = paqueteAMostrar.idSG + "";
        }

        public void mostrarServicio(TextBox nombre, TextBox Tcategoria, TextBox monto, Label idPaquete, int intIdServicio)
        {
            //Se envía el idServicio a la capa BL
            Servicios_BL Servicio_BL = new Servicios_BL();
            Servicio servicioAMostrar = Servicio_BL.mostrarUnServicio(intIdServicio);

            //Se define el String cada destino
            int Switch = servicioAMostrar.Categoria;
            string categoria = "";
            switch (Switch)
            {
                case 0:
                    categoria = "Transporte";
                    break;
                case 1:
                    categoria = "Hospedaje";
                    break;
                case 2:
                    categoria = "Alimentación";
                    break;
                case 3:
                    categoria = "Actividades";
                    break;
                case 4:
                    categoria = "Entradas";
                    break;
                default:
                    Console.WriteLine("Sin Categoria");
                    break;
            }

            //Se llenan los campos del formulario con la informacion del servicio
            nombre.Text = servicioAMostrar.Nombre;
            Tcategoria.Text = categoria;
            monto.Text = servicioAMostrar.Monto + "";
            idPaquete.Text = servicioAMostrar.IdServicio + "";
        }

        public string agregarServicio(TextBox nombreServicio, TextBox catServicio, TextBox montoServicio, Label idServicio, Label idPaquete, int monto)
        {
            //Inicializacion de variables
            string valorReturn = "";

            try
            {
                //Captura y convierte a INT el valor del idServicio
                int intServicio = Convert.ToInt32(idServicio.Text);

                //Captura y convierte a INT el valor del ID Paquete
                int intPaquete = Convert.ToInt32(idPaquete.Text);

                //Se envía el idPaquete y idServicio a la capa BL
                Paquete_BL Paquete_BL = new Paquete_BL();
                //Paquete_BL.relacionaPaqueteServicio(intPaquete, intServicio, monto);

                valorReturn = "Se ha agregado el Destino al Paquete correctamente.";
                limpiarCampos(nombreServicio, catServicio, montoServicio, idServicio);

            }
            catch
            {
                valorReturn = "Debe de mostrar un Paquete y un Servicio existente de la lista Izquierda.";
            }
            return valorReturn;
        }

        public void limpiarCampos(TextBox nombreServicio, TextBox catServicio, TextBox montoServicio, Label idDestino)
        {
            nombreServicio.Text = "";
            catServicio.Text = "";
            montoServicio.Text = "";
            idDestino.Text = "Identificador";
        }

    }
}
